/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.model;

import java.util.Collection;
import java.util.ArrayList;
import src.dto.PrioridadeDTO;

import java.sql.*;

/**
 *
 * @author camila
 */
public class genericoDAO {

    //Declaração de variáveis
    private static Conexao conexao = null;
    private static Statement stmt = null;

    Collection<PrioridadeDTO> retorno = new ArrayList<PrioridadeDTO>();
    private String sql;
    PrioridadeDTO prioridade;

    //Método construtor do UsuárioDAO.
    public genericoDAO(){
        conexao= Conexao.getConexao();
    }

    public Collection<PrioridadeDTO> listaPrioridade (){
        sql = "SELECT * FROM prioridade ORDER BY descricao_prioridade";
        return listarPrio(sql);
    }

    public Collection<PrioridadeDTO> buscarId (String prioridade){
        sql = "SELECT * FROM prioridade WHERE descricao_prioridade = '" + prioridade + "'";
        return listarPrio(sql);
    }

    //Método para genérico para listar prioridade
    private Collection<PrioridadeDTO> listarPrio (String sql){
        try{
            this.stmt = this.conexao.con.createStatement();
            ResultSet rs = this.stmt.executeQuery(sql);
            while (rs.next()){
                prioridade = new PrioridadeDTO();
                prioridade.setIdPrio(rs.getInt("id_prioridade"));
                prioridade.setDescricaoPrioridade(rs.getString("descricao_prioridade"));
                prioridade.setPrazo(rs.getInt("prazo"));
		retorno.add(prioridade);
            }
        }catch(SQLException se){
            printSQLException(se);
        }
        return retorno;
    }

    //Método para inserir, excluir e atualizar.
    private boolean modificar(String sql){
        try{
            PreparedStatement stmt = this.conexao.con.prepareStatement(sql);
            stmt.executeUpdate();
            return true;
        }catch(SQLException se){
            printSQLException(se);
            return false;
        }
    }

    //Método que imprimi a exceção do SQL
    private static void printSQLException(SQLException se){
        while(se != null){
            System.out.print("SQLException: State: " + se.getSQLState());
            System.out.print("Severety: " + se.getErrorCode());
            System.out.print(se.getMessage());
            se = se.getNextException();
        }
    }
}
